﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace CPPEI.WorkflowCore
{
    /// <summary>
    /// 流程活动
    /// </summary>
    public class Activity
    {
        /// <summary>
        /// 活动编号
        /// </summary>
        public string Code { get; set; }

        /// <summary>
        /// 活动名称
        /// </summary>
        public string Name { get; set; }

        /// <summary>
        /// 活动的类型
        /// </summary>
        public ActivityType Type { get; set; }

        /// <summary>
        /// 活动模板类型
        /// </summary>
        public ActivityTemplateType TemplateType { get; set; }

        /// <summary>
        /// 操作集合，此活动上可以执行的操作
        /// </summary>
        public ActionCollection Actions { get; private set; }

        /// <summary>
        /// 活动的属性信息，定义一些其他的有用的信息
        /// </summary>
        public ActivityProperty Property { get; set; }

        /// <summary>
        /// 指向下一步的所有连接关系
        /// </summary>
        public List<Link> Next { get; set; }

        /// <summary>
        /// 是否备份业务数据.
        /// 如果没有配置，那么采用流程的配置.
        /// </summary>
        public bool? IsBackingDataUp { get; set; }

        /// <summary>
        /// 在这个节点可以操作的参与者信息，
        /// 如果不是用代办模式，那么只有在这个集合里的人才能只处理流程。
        /// </summary>
        public ActorCollection Actors { get; set; }

        public Activity(string code,
            string name,
            ActivityType type,
            ActivityTemplateType templateType)
        {
            this.Code = code;
            this.Name = name;
            Actions = new ActionCollection();
            Property = new ActivityProperty();
            Actors = new ActorCollection();
            this.Type = type;
            this.TemplateType = templateType;
            this.Next = new List<Link>();
        }
    }
}
